/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Zully
 */
@Entity
@Table(name = "neumaticos")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Neumaticos.findAll", query = "SELECT n FROM Neumaticos n"),
    @NamedQuery(name = "Neumaticos.findById", query = "SELECT n FROM Neumaticos n WHERE n.id = :id"),
    @NamedQuery(name = "Neumaticos.findByCodigo", query = "SELECT n FROM Neumaticos n WHERE n.codigo = :codigo"),
    @NamedQuery(name = "Neumaticos.findByNumSerie", query = "SELECT n FROM Neumaticos n WHERE n.numSerie = :numSerie"),
    @NamedQuery(name = "Neumaticos.findByFechaRegistro", query = "SELECT n FROM Neumaticos n WHERE n.fechaRegistro = :fechaRegistro"),
    @NamedQuery(name = "Neumaticos.findByCodBarras", query = "SELECT n FROM Neumaticos n WHERE n.codBarras = :codBarras"),
    @NamedQuery(name = "Neumaticos.findByNumFactura", query = "SELECT n FROM Neumaticos n WHERE n.numFactura = :numFactura"),
    @NamedQuery(name = "Neumaticos.findByNumRenovaciones", query = "SELECT n FROM Neumaticos n WHERE n.numRenovaciones = :numRenovaciones"),
    @NamedQuery(name = "Neumaticos.findByDistanciaRecorrida", query = "SELECT n FROM Neumaticos n WHERE n.distanciaRecorrida = :distanciaRecorrida"),
    @NamedQuery(name = "Neumaticos.findByFechaCompra", query = "SELECT n FROM Neumaticos n WHERE n.fechaCompra = :fechaCompra"),
    @NamedQuery(name = "Neumaticos.findByPrecio", query = "SELECT n FROM Neumaticos n WHERE n.precio = :precio"),
    @NamedQuery(name = "Neumaticos.findByGarantiaDias", query = "SELECT n FROM Neumaticos n WHERE n.garantiaDias = :garantiaDias"),
    @NamedQuery(name = "Neumaticos.findByGarantiaKilometros", query = "SELECT n FROM Neumaticos n WHERE n.garantiaKilometros = :garantiaKilometros"),
    @NamedQuery(name = "Neumaticos.findByComentario", query = "SELECT n FROM Neumaticos n WHERE n.comentario = :comentario"),
    @NamedQuery(name = "Neumaticos.findByEstado", query = "SELECT n FROM Neumaticos n WHERE n.estado = :estado"),
    @NamedQuery(name = "Neumaticos.findByProfunidad", query = "SELECT n FROM Neumaticos n WHERE n.profunidad = :profunidad"),
    @NamedQuery(name = "Neumaticos.findByNumCapas", query = "SELECT n FROM Neumaticos n WHERE n.numCapas = :numCapas"),
    @NamedQuery(name = "Neumaticos.findByProfundidadMinima", query = "SELECT n FROM Neumaticos n WHERE n.profundidadMinima = :profundidadMinima"),
    @NamedQuery(name = "Neumaticos.findByPresionMinima", query = "SELECT n FROM Neumaticos n WHERE n.presionMinima = :presionMinima"),
    @NamedQuery(name = "Neumaticos.findByFechaInsercionActualizacion", query = "SELECT n FROM Neumaticos n WHERE n.fechaInsercionActualizacion = :fechaInsercionActualizacion"),
    @NamedQuery(name = "Neumaticos.findByPresionActual", query = "SELECT n FROM Neumaticos n WHERE n.presionActual = :presionActual"),
    @NamedQuery(name = "Neumaticos.findByLabradoExterior", query = "SELECT n FROM Neumaticos n WHERE n.labradoExterior = :labradoExterior"),
    @NamedQuery(name = "Neumaticos.findByKmAlMontaje", query = "SELECT n FROM Neumaticos n WHERE n.kmAlMontaje = :kmAlMontaje"),
    @NamedQuery(name = "Neumaticos.findByLabradoCentral", query = "SELECT n FROM Neumaticos n WHERE n.labradoCentral = :labradoCentral"),
    @NamedQuery(name = "Neumaticos.findByKmRecorridoUltimaVida", query = "SELECT n FROM Neumaticos n WHERE n.kmRecorridoUltimaVida = :kmRecorridoUltimaVida"),
    @NamedQuery(name = "Neumaticos.findByFechaMontaje", query = "SELECT n FROM Neumaticos n WHERE n.fechaMontaje = :fechaMontaje"),
    @NamedQuery(name = "Neumaticos.findByLabradoInterno", query = "SELECT n FROM Neumaticos n WHERE n.labradoInterno = :labradoInterno"),
    @NamedQuery(name = "Neumaticos.findByKmTotal", query = "SELECT n FROM Neumaticos n WHERE n.kmTotal = :kmTotal")})
public class Neumaticos implements Serializable { 
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "codigo")
    private String codigo;
    @Column(name = "num_serie")
    private String numSerie;
    @Column(name = "fecha_registro")
    @Temporal(TemporalType.DATE)
    private Date fechaRegistro;
    @Column(name = "cod_barras")
    private String codBarras;
    @Column(name = "num_factura")
    private String numFactura;
    @Column(name = "num_renovaciones")
    private Integer numRenovaciones;
    @Basic(optional = false)
    @Column(name = "num_despinches")
    private Integer numDespinches;
    @Column(name = "distancia_recorrida")
    private Integer distanciaRecorrida;
    @Column(name = "fecha_compra")
    @Temporal(TemporalType.DATE)
    private Date fechaCompra;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "precio")
    private Float precio;
    @Column(name = "garantia_dias")
    private Integer garantiaDias;
    @Column(name = "garantia_kilometros")
    private Integer garantiaKilometros;
    @Column(name = "comentario")
    private String comentario;
    @Basic(optional = false)
    @Column(name = "estado")
    private boolean estado;
    @Column(name = "profunidad")
    private Double profunidad;
    @Column(name = "num_capas")
    private Integer numCapas;
    @Column(name = "profundidad_minima")
    private Double profundidadMinima;
    @Column(name = "presion_minima")
    private Double presionMinima;
    @Basic(optional = false)
    @Column(name = "fecha_insercion_actualizacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaInsercionActualizacion;
    @Column(name = "presion_actual")
    private Integer presionActual;
    @Column(name = "labrado_exterior")
    private Double labradoExterior;
    @Column(name = "km_al_montaje")
    private Integer kmAlMontaje;
    @Column(name = "labrado_central")
    private Double labradoCentral;
    @Column(name = "km_recorrido_ultima_vida")
    private Integer kmRecorridoUltimaVida;
    @Column(name = "fecha_montaje")
    @Temporal(TemporalType.DATE)
    private Date fechaMontaje;
    @Column(name = "labrado_interno")
    private Double labradoInterno;
    @Column(name = "km_total")
    private Integer kmTotal;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idNeumatico", fetch = FetchType.LAZY)
    private List<DetalleControlCambioNeumatico> detalleControlCambioNeumaticoList;
    @JoinColumn(name = "id_usuario", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Usuarios idUsuario;
    @JoinColumn(name = "tipo_piso", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private TipoPiso tipoPiso;
    @JoinColumn(name = "id_modelo", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private ModelosBandaNeumatico idModelo;
    @JoinColumn(name = "id_marca", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private MarcasNeumatico idMarca;
    @JoinColumn(name = "id_forma_pago", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private FormasPago idFormaPago;
    @JoinColumn(name = "id_estado", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private EstadosNeumaticos idEstado;
    @JoinColumn(name = "id_distribuidor", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private DistribuidoresNeumaticos idDistribuidor;
    @JoinColumn(name = "id_categoria", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Categorias idCategoria;
    @JoinColumn(name = "id_almacen", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private Almacenes idAlmacen;
    @JoinColumn(name = "id_banda", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private TiposBandaNeumatico idBanda;
    @JoinColumn(name = "id_banda_inicial", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private TiposBandaNeumatico idBandaInicial;
    @Basic(optional = false)
    @Column(name = "inf_montaje")
    private String infMontaje;
    @Basic(optional = false)
    @Column(name = "codigo_vehiculo")
    private String codigoVehiculo;
    @Column(name = "posicion")
    private Short posicion;
    @JoinColumn(name = "id_tipo_piso_inicial", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private TipoPiso idTipoPisoInicial;
    @JoinColumn(name = "id_estado_medicion", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private EstadosMedicion idEstadoMedicion;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idNeumatico", fetch = FetchType.LAZY)
    private List<DetalleInspeccionEquipo> detalleInspeccionEquipoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idNeumatico", fetch = FetchType.LAZY)
    private List<DetalleControlReencauche> detalleControlReencaucheList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idNeumatico", fetch = FetchType.LAZY)
    private List<MedicionComprobacion> medicionComprobacionList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idNeumaticos", fetch = FetchType.LAZY)
    private List<Despinches> despinchesList;
    @OneToMany(mappedBy = "idNeumatico", fetch = FetchType.LAZY)
    private List<DetalleAlineacion> detalleAlineacionList;
    @Column(name = "fechaDevolucion")
    @Temporal(TemporalType.DATE)
    private Date fechaDevolucion;

    public Neumaticos() {
    }

    public Neumaticos(Integer id) {
        this.id = id;
    }

    public Neumaticos(Integer id, String codigo, boolean estado, Date fechaInsercionActualizacion) {
        this.id = id;
        this.codigo = codigo;
        this.estado = estado;
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getNumSerie() {
        return numSerie;
    }

    public void setNumSerie(String numSerie) {
        this.numSerie = numSerie;
    }

    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    public String getCodBarras() {
        return codBarras;
    }

    public void setCodBarras(String codBarras) {
        this.codBarras = codBarras;
    }

    public String getNumFactura() {
        return numFactura;
    }

    public void setNumFactura(String numFactura) {
        this.numFactura = numFactura;
    }

    public Integer getNumRenovaciones() {
        return numRenovaciones;
    }

    public void setNumRenovaciones(Integer numRenovaciones) {
        this.numRenovaciones = numRenovaciones;
    }
    
    public Integer getNumDespinches() {
        return numDespinches;
    }

    public void setNumDespinches(Integer numDespinches) {
        this.numDespinches = numDespinches;
    }

    public Integer getDistanciaRecorrida() {
        return distanciaRecorrida;
    }

    public void setDistanciaRecorrida(Integer distanciaRecorrida) {
        this.distanciaRecorrida = distanciaRecorrida;
    }

    public Date getFechaCompra() {
        return fechaCompra;
    }

    public void setFechaCompra(Date fechaCompra) {
        this.fechaCompra = fechaCompra;
    }

    public Float getPrecio() {
        return precio;
    }

    public void setPrecio(Float precio) {
        this.precio = precio;
    }

    public Integer getGarantiaDias() {
        return garantiaDias;
    }

    public void setGarantiaDias(Integer garantiaDias) {
        this.garantiaDias = garantiaDias;
    }

    public Integer getGarantiaKilometros() {
        return garantiaKilometros;
    }

    public void setGarantiaKilometros(Integer garantiaKilometros) {
        this.garantiaKilometros = garantiaKilometros;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public boolean getEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }

    public Double getProfunidad() {
        return profunidad;
    }

    public void setProfunidad(Double profunidad) {
        this.profunidad = profunidad;
    }

    public Integer getNumCapas() {
        return numCapas;
    }

    public void setNumCapas(Integer numCapas) {
        this.numCapas = numCapas;
    }

    public Double getProfundidadMinima() {
        return profundidadMinima;
    }

    public void setProfundidadMinima(Double profundidadMinima) {
        this.profundidadMinima = profundidadMinima;
    }

    public Double getPresionMinima() {
        return presionMinima;
    }

    public void setPresionMinima(Double presionMinima) {
        this.presionMinima = presionMinima;
    }

    public Date getFechaInsercionActualizacion() {
        return fechaInsercionActualizacion;
    }

    public void setFechaInsercionActualizacion(Date fechaInsercionActualizacion) {
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
    }

    public Integer getPresionActual() {
        return presionActual;
    }

    public void setPresionActual(Integer presionActual) {
        this.presionActual = presionActual;
    }

    public Double getLabradoExterior() {
        return labradoExterior;
    }

    public void setLabradoExterior(Double labradoExterior) {
        this.labradoExterior = labradoExterior;
    }

    public Integer getKmAlMontaje() {
        return kmAlMontaje;
    }

    public void setKmAlMontaje(Integer kmAlMontaje) {
        this.kmAlMontaje = kmAlMontaje;
    }

    public Double getLabradoCentral() {
        return labradoCentral;
    }

    public void setLabradoCentral(Double labradoCentral) {
        this.labradoCentral = labradoCentral;
    }

    public Integer getKmRecorridoUltimaVida() {
        return kmRecorridoUltimaVida;
    }

    public void setKmRecorridoUltimaVida(Integer kmRecorridoUltimaVida) {
        this.kmRecorridoUltimaVida = kmRecorridoUltimaVida;
    }

    public Date getFechaMontaje() {
        return fechaMontaje;
    }

    public void setFechaMontaje(Date fechaMontaje) {
        this.fechaMontaje = fechaMontaje;
    }

    public Double getLabradoInterno() {
        return labradoInterno;
    }

    public void setLabradoInterno(Double labradoInterno) {
        this.labradoInterno = labradoInterno;
    }

    public Integer getKmTotal() {
        return kmTotal;
    }

    public void setKmTotal(Integer kmTotal) {
        this.kmTotal = kmTotal;
    }

    @XmlTransient
    public List<DetalleControlCambioNeumatico> getDetalleControlCambioNeumaticoList() {
        return detalleControlCambioNeumaticoList;
    }

    public void setDetalleControlCambioNeumaticoList(List<DetalleControlCambioNeumatico> detalleControlCambioNeumaticoList) {
        this.detalleControlCambioNeumaticoList = detalleControlCambioNeumaticoList;
    }

    public Usuarios getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Usuarios idUsuario) {
        this.idUsuario = idUsuario;
    }

    public TipoPiso getTipoPiso() {
        return tipoPiso;
    }

    public void setTipoPiso(TipoPiso tipoPiso) {
        this.tipoPiso = tipoPiso;
    }

    public ModelosBandaNeumatico getIdModelo() {
        return idModelo;
    }

    public void setIdModelo(ModelosBandaNeumatico idModelo) {
        this.idModelo = idModelo;
    }
    
    public MarcasNeumatico getIdMarca() {
        return idMarca;
    }

    public void setIdMarca(MarcasNeumatico idMarca) {
        this.idMarca = idMarca;
    }

    public FormasPago getIdFormaPago() {
        return idFormaPago;
    }

    public void setIdFormaPago(FormasPago idFormaPago) {
        this.idFormaPago = idFormaPago;
    }

    public EstadosNeumaticos getIdEstado() {
        return idEstado;
    }

    public void setIdEstado(EstadosNeumaticos idEstado) {
        this.idEstado = idEstado;
    }

    public DistribuidoresNeumaticos getIdDistribuidor() {
        return idDistribuidor;
    }

    public void setIdDistribuidor(DistribuidoresNeumaticos idDistribuidor) {
        this.idDistribuidor = idDistribuidor;
    }

    public Categorias getIdCategoria() {
        return idCategoria;
    }

    public void setIdCategoria(Categorias idCategoria) {
        this.idCategoria = idCategoria;
    }

    public Almacenes getIdAlmacen() {
        return idAlmacen;
    }

    public void setIdAlmacen(Almacenes idAlmacen) {
        this.idAlmacen = idAlmacen;
    }
    
    public TiposBandaNeumatico getIdBanda() {
        return idBanda;
    }

    public void setIdBanda(TiposBandaNeumatico idBanda) {
        this.idBanda = idBanda;
    }
    
    public TiposBandaNeumatico getIdBandaInicial() {
        return idBandaInicial;
    }

    public void setIdBandaInicial(TiposBandaNeumatico idBandaInicial) {
        this.idBandaInicial = idBandaInicial;
    }
    
    public String getInfMontaje() {
        return infMontaje;
    }

    public void setInfMontaje(String infMontaje) {
        this.infMontaje = infMontaje;
    }

    public String getCodigoVehiculo() {
        return codigoVehiculo;
    }

    public void setCodigoVehiculo(String codigoVehiculo) {
        this.codigoVehiculo = codigoVehiculo;
    }
    
    public Short getPosicion() {
        return posicion;
    }

    public void setPosicion(Short posicion) {
        this.posicion = posicion;
    }
    
    public EstadosMedicion getIdEstadoMedicion() {
        return idEstadoMedicion;
    }

    public void setIdEstadoMedicion(EstadosMedicion idEstadoMedicion) {
        this.idEstadoMedicion = idEstadoMedicion;
    }
    
    public TipoPiso getIdTipoPisoInicial() {
        return idTipoPisoInicial;
    }

    public void setIdTipoPisoInicial(TipoPiso idTipoPisoInicial) {
        this.idTipoPisoInicial = idTipoPisoInicial;
    }
    
        public Date getFechaDevolucion() {
        return fechaDevolucion;
    }

    public void setFechaDevolucion(Date fechaDevolucion) {
        this.fechaDevolucion = fechaDevolucion;
    }

    @XmlTransient
    public List<DetalleInspeccionEquipo> getDetalleInspeccionEquipoList() {
        return detalleInspeccionEquipoList;
    }

    public void setDetalleInspeccionEquipoList(List<DetalleInspeccionEquipo> detalleInspeccionEquipoList) {
        this.detalleInspeccionEquipoList = detalleInspeccionEquipoList;
    }

    @XmlTransient
    public List<DetalleControlReencauche> getDetalleControlReencaucheList() {
        return detalleControlReencaucheList;
    }

    public void setDetalleControlReencaucheList(List<DetalleControlReencauche> detalleControlReencaucheList) {
        this.detalleControlReencaucheList = detalleControlReencaucheList;
    }

    @XmlTransient
    public List<MedicionComprobacion> getMedicionComprobacionList() {
        return medicionComprobacionList;
    }

    public void setMedicionComprobacionList(List<MedicionComprobacion> medicionComprobacionList) {
        this.medicionComprobacionList = medicionComprobacionList;
    }

    @XmlTransient
    public List<Despinches> getDespinchesList() {
        return despinchesList;
    }

    public void setDespinchesList(List<Despinches> despinchesList) {
        this.despinchesList = despinchesList;
    }
    
    @XmlTransient
    public List<DetalleAlineacion> getDetalleAlineacionList() {
        return detalleAlineacionList;
    }

    public void setDetalleAlineacionList(List<DetalleAlineacion> detalleAlineacionList) {
        this.detalleAlineacionList = detalleAlineacionList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Neumaticos)) {
            return false;
        }
        Neumaticos other = (Neumaticos) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.camachosanchez.bean.Neumaticos[ id=" + id + " ]";
    }
    
}
